GridFS ব্যবহার করে বড় ফাইল সংরক্ষণ

Database Tutorials - মঙ্গোডিবি (MongoDB) - MongoDB GridFS
235

MongoDB তে GridFS হল একটি ফিচার যা বড় ফাইল যেমন ইমেজ, ভিডিও, অডিও বা অন্যান্য মিডিয়া ফাইল MongoDB ডেটাবেসে সংরক্ষণ করার জন্য ব্যবহৃত হয়। MongoDB একটি ডকুমেন্ট-ভিত্তিক ডেটাবেস, এবং এটি স্বাভাবিকভাবেই বড় বাইনারি ফাইল বা ব্লব (BLOB) ধারণ করতে সক্ষম নয়, কিন্তু GridFS ফিচারটি ফাইলগুলিকে ছোট ছোট অংশে ভাগ করে সংরক্ষণ করার মাধ্যমে এই সীমাবদ্ধতা অতিক্রম করে।

GridFS ফাইলগুলোকে দুটি ভাগে বিভক্ত করে:

  1. Chunks Collection: ফাইলের অংশগুলি (chunks) সংরক্ষণ করা হয়।
  2. Files Collection: ফাইলের মেটাডেটা, যেমন ফাইলের নাম, ফাইলের ধরণ, এবং অন্যান্য তথ্য সংরক্ষণ করা হয়।

GridFS MongoDB তে খুবই উপকারী যখন বড় ডেটা সংরক্ষণ এবং তারপরে পুনরুদ্ধার করা প্রয়োজন।


GridFS এর সাহায্যে বড় ফাইল সংরক্ষণ এবং পুনরুদ্ধার করার প্রক্রিয়া

1. GridFS ইনস্টলেশন

MongoDB তে GridFS ব্যবহারের জন্য প্রথমে mongodb এবং gridfs-stream লাইব্রেরি ইনস্টল করতে হবে। GridFS-কে Node.js এর সাথে ব্যবহার করতে, আপনি gridfs-stream ব্যবহার করতে পারেন।

npm install gridfs-stream mongoose

2. GridFS এর মাধ্যমে MongoDB তে বড় ফাইল সংরক্ষণ

MongoDB তে বড় ফাইল সংরক্ষণের জন্য gridfs-stream ব্যবহার করতে হবে, যা MongoDB এর সাথে স্ট্রিমিং এর মাধ্যমে ফাইল সংরক্ষণ করতে সহায়তা করে। এখানে একটি উদাহরণ দেওয়া হলো, যেখানে একটি ইমেজ ফাইল MongoDB তে GridFS ব্যবহারের মাধ্যমে আপলোড করা হয়েছে।

const mongoose = require('mongoose');
const Grid = require('gridfs-stream');
const fs = require('fs');
const path = require('path');
const { MongoClient } = require('mongodb');

// MongoDB এর URI দিয়ে সংযোগ করুন
const uri = 'mongodb://localhost:27017/mydatabase';

const conn = mongoose.createConnection(uri, { useNewUrlParser: true, useUnifiedTopology: true });

let gfs;

conn.once('open', () => {
  // GridFS ইন্সট্যান্স তৈরি করুন
  gfs = Grid(conn.db, mongoose.mongo);
  gfs.collection('uploads'); // এখানে uploads হলো ফাইলের কালেকশন নাম
});

// ফাইল আপলোড করার জন্য
const uploadFile = (filePath) => {
  const readStream = fs.createReadStream(filePath);
  const filename = path.basename(filePath);

  const writeStream = gfs.createWriteStream({
    filename: filename,
    content_type: 'image/jpeg', // ফাইলের টাইপ
  });

  readStream.pipe(writeStream);

  writeStream.on('close', (file) => {
    console.log('ফাইল আপলোড সফল:', file);
  });
};

// ফাইল আপলোড করুন
uploadFile('path/to/your/largefile.jpg');

এখানে:

  • createWriteStream GridFS এর মাধ্যমে MongoDB তে ফাইল সংরক্ষণ করে।
  • fs.createReadStream ফাইলের কনটেন্ট পড়ে এবং pipe ব্যবহার করে ফাইলটি MongoDB তে স্ট্রিম করে সংরক্ষণ করা হয়।

3. GridFS এর মাধ্যমে MongoDB থেকে ফাইল পুনরুদ্ধার করা

MongoDB থেকে একটি ফাইল পুনরুদ্ধার করতে আপনি gridfs-stream এর createReadStream ব্যবহার করতে পারেন। এটি MongoDB ডেটাবেস থেকে ফাইল পড়ার জন্য স্ট্রিমিং ব্যবহার করে।

const downloadFile = (filename) => {
  gfs.files.findOne({ filename: filename }, (err, file) => {
    if (err) {
      console.log('ফাইল খুঁজে পাওয়া যায়নি:', err);
      return;
    }

    if (!file) {
      console.log('ফাইল পাওয়া যায়নি');
      return;
    }

    const readStream = gfs.createReadStream({ filename: file.filename });
    const writeStream = fs.createWriteStream(path.join(__dirname, 'downloads', file.filename));

    readStream.pipe(writeStream);

    writeStream.on('close', () => {
      console.log('ফাইল ডাউনলোড সফল:', file.filename);
    });
  });
};

// ফাইল ডাউনলোড করুন
downloadFile('largefile.jpg');

এখানে:

  • gfs.createReadStream MongoDB থেকে GridFS ফাইলের কনটেন্ট স্ট্রিম করে এবং একটি লোকাল ফাইলে লেখে।
  • pipe ব্যবহার করে ফাইলটি ডাউনলোড করা হয় এবং লোকাল ডিরেক্টরিতে সংরক্ষণ করা হয়।

4. GridFS এর সুবিধা

  • বড় ফাইল সংরক্ষণ: MongoDB ডিফল্টভাবে বড় ফাইল সংরক্ষণ করতে সক্ষম নয়, কিন্তু GridFS এই সীমাবদ্ধতাকে অতিক্রম করে এবং বড় ফাইল (যেমন ইমেজ, ভিডিও, অডিও) MongoDB তে সংরক্ষণ করতে সাহায্য করে।
  • ফাইল অংশে বিভক্ত: GridFS ফাইলকে ছোট ছোট অংশে বিভক্ত করে এবং MongoDB তে পৃথকভাবে সংরক্ষণ করে, ফলে এটি দ্রুত সঞ্চালন এবং পুনরুদ্ধারে সহায়তা করে।
  • ফাইল ম্যানেজমেন্ট: MongoDB তে GridFS ব্যবহার করে আপনি মিডিয়া ফাইলগুলোর সাথে সম্পর্কিত মেটাডেটা সহজে ম্যানেজ করতে পারবেন, যেমন ফাইলের নাম, টাইপ, সাইজ ইত্যাদি।
  • স্ট্রিমিং সাপোর্ট: GridFS স্ট্রিমিং সাপোর্ট প্রদান করে, যার মাধ্যমে ফাইল আপলোড এবং ডাউনলোড উভয়ই স্ট্রিমের মাধ্যমে করা যায়, যা বড় ফাইলের জন্য উপকারী।

সারাংশ

MongoDB তে GridFS ব্যবহার করে বড় ফাইল যেমন ইমেজ, ভিডিও বা অন্যান্য মিডিয়া ফাইল সহজে সংরক্ষণ এবং পুনরুদ্ধার করা যায়। এটি MongoDB তে ডেটা স্টোর করতে ব্যবহৃত সাধারণ ডকুমেন্ট স্টোরেজের সীমাবদ্ধতা অতিক্রম করে এবং ফাইলগুলিকে ছোট অংশে ভাগ করে ডেটাবেসে সংরক্ষণ করে। Node.js এর সাথে GridFS ব্যবহার করে আপনি ফাইল আপলোড, ডাউনলোড এবং ম্যানেজ করতে পারবেন। GridFS এর মাধ্যমে MongoDB তে বড় ডেটা সঞ্চালন এবং স্টোরেজ অনেক সহজ হয়ে যায়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...